什么是比较好的低代码产品
本文基于笔者对「好的」低代码的理解,以及对业界当前开源的各类不错低代码产品的一个简单分析,期待可以给大伙一些输入,可能有些观点不够成熟,欢迎交流与讨论。
可能大家谈到低代码想到更多的是低代码搭建页面的平台,内部不少也是此种,其实对于偏逻辑编排、服务 BaaS 能力的偏可视化方式其实也算低代码,旨在「通过少写代码,用更便捷的方式来实现原本需写代码的工作」。
说到低代码,喜欢的人特别喜欢,不喜欢的人很不喜欢,此外也有“假装”去喜欢的,也有喜欢得不明不白的,我现在对于低代码是有点儿喜欢的那种,不过只限于「在特定领域,实现需求的速度比熟练工程师写代码要快的场景」,这种场景下用起来真心会比较爽,可能也用得不爽的时候,但是这种不爽远小于他带来的效益减去原本敲代码的投入,也很值得将这类产品做到好用爱用。
其实低代码产品是比较难做成的,特别是大而全的那种,由于考虑因素过多,导致步调很慢,也很难做到很易用,导致一边投入很大,一边又急切上线落地使用,从而出现平台方觉得投入很苦,使用方觉得不太好用还需吃狗粮的矛盾,往往需经过忍耐很长时间才可「守得云开见月明」,不过很多都在没有见月明的时候就奄奄一息了。反而专门领域的比如说表单、表格、图表低代码搭建活的很不错。还有一些 BaaS 类单领域的活得也还可以,我个人更偏向「易用的可很轻快解决对应领域问题低代码产品方案」。
此外还有一个误区,有人会认为低代码是给所有工程师都可以使用的,其实我认为不太对,低代码最开始出现的初衷是为了解决「让不是程序员的人使用视图、组件、模板和表单等方式快速在不写代码情况下构建应用」,这里我们可以引申一下,低代码更适合两类场景,一类是「让不是这个领域的人也可以很快的写这个领域的应用」,第二类是「在特定领域通过抽象协议模型通过低代码的方式来快速实现产品」。
这里不多扯低代码的优缺点和喜好了,关于低代码产品内部已经有不少,也都比较熟,这里就不多加说明了,刚好最近在思考团队下一步的提效方式,我们来看看业界开源的低代码产品,说不定会有一些输入。
一体化的低代码平台
一体化也即从后端到前端的实现全部给包括了,说实话,我认为这种是最难做的,特别在大公司里面,假如各司其职,同时多个团队协作的话比较难做起来,因为各方的标准协议、数据库模型结构均很难一致,但是假如前端、后端均在一个团队,有一整套统一的模型协议,还是有可能做成的,比如说如下这两个产品。
Appsmith[1]
Appsmith 是一个用于构建内部应用的低代码开源框架,一个印度的创业公司弄的,很适合做企业后台管理系统,常用的 CRUD、Dashboards、数据报表啥的不在话下,Appsmith 有一种 Retool[2] “开源版”的感觉。
在使用上和常规的开发套路很像,第一步画 UI 界面,第二步连接到数据源,第三步将数据源和 UI 界面串起来,第四步部署,只不过将原有编码过程变成了可视化过程。
此外还提供了大量的模板可供使用,包括 Project、Management Support、Human Resources、Sales、Marketing、Finance 等方向,有些思路对于不少低代码方向有一定参照作用。
Budibase[3]
Budibase 官方宣称是一个你会喜欢使用的低代码平台,通过简单易用的方式来提高构建一个应用的速度。和 Appsmith 相比,是另外一种实现方式,此外 Budibase 有内置数据库、外部数据源、设计图形用户界面和自动化部分,在创建 UI 界面的使用使用的是偏设计的方式,整体而言会更加美观一点。
ToolJet[4]
此外 ToolJet 也是一个不错的低代码框架,同样支持接入多种数据源,偏拖拽的方式实现前端的界面,包括对于 mobile 端的一些支持,此外使用的是 JS 比较友好。
除去上面外,nocobase[5]、illa-builder[6] 和 refine[7] 这三款也可以去调研调研。
BaaS 领域的低代码
BaaS (Backend as a Service) 这个概念我是从 2019 年开始弄 Serverless 的时候开始了解到的,当时想着要是有很多好用的 BaaS 能力,那写 FaaS 函数会不知道有多爽。
对于想快速实现一个产品而言,使用 BaaS,开发人员可以专注于前端开发,而无需花费大量时间和精力来构建和维护后端基础设施,这使得开发人员能够快速构建应用程序,更快地将其推向市场。不过这一块当前在国内其实弄得没有国外那么好用和精致,国外有几个还不错的。
Supabase[8]
Supabase 是一个开源工具的组合,使用企业级的开源产品构建 Firebase 的功能。Firebase 是谷歌旗下的一家 BaaS 云服务公司,可以让开发者通过 Firebase 的框架就可以简单地开发一个 App,无需服务器以及基础设施。了解了他是啥,就大概知晓 Supabase 是什么了。
主要功能是提供了数据库托管、身份验证和授权、自动生成 API、函数服务、文件存储等易用能力,相当于这些代码的实现使用者都不需要写了,只需去调用即可,此外提供了 JS/C#/Flutter/Go/Java/Python/Swift/Rust 等客户端库来供使用,更多可见文档[9]。
Appwrite[10]
除去 Supabase,Appwrite 也是一个很有名的完整后端服务能力,可以当做他的竞品,功能差不多,通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。基于 Docker 的端到端开发者平台,其容器化的微服务库可应用于网页端,移动端,以及后端。
提供对应的软件服务,如账户、用户、团队、数据库、存储、云函数、多语言、头像等通用能力,并搭配对应客户端或服务端的开发套件,使用微服务架构方式让其更好扩展。
此外在数据库领域还有一个叫做 SurrealDB[11] 的端到端的云原生数据库,适用于 Web、移动端、无服务器、后端和传统应用程序,通过简化数据库和 API 调用来减少现代应用程序的开发时间,消除对大多数服务器端组件的需求。
Headless CMS
敲代码快 10 年的后端同学应该对 Discuz、DedeCMS、WordPress 这种当时很火的框架很熟悉,还记得大学时期经常用 DedeCMS 去接商业项目,很快很爽。现在这一类偏后端解决方案进一步发展,变得更加简单、美观、好用了,这里简单介绍一下 Strapi 类的无头 CMS,简单而言就是只提供数据的内容管理系统,不关注 UI,内容优先。
Strapi[12]
Strapi 是开源的无头 CMS,使用 JavaScript,很灵活完全可定制,支持不少插件,可以很快的生成一条 REST API 服务,整体使用起来对于前端同学来言还是比较熟悉的,可以一试。
Cube[13]
Cube 是一个用于构建数据应用程序的 Headless 商业智能框架,使用任何来源的数据,将其组织成一致的指标,并将其用于每个数据应用程序。
此外除去 Strapi 、Cube 这两个比较有名的 Headless CMS,你还可以试试 payload[14]、webiny-js[15] 这两个。
流程编排
看起来不少公司都有自己的服务编排的平台,对于大一点的厂,可能每一个 BU 都有一个,不过整体而言都很难做到好用,同时很难讲明白「服务编排比写代码要快要方便」这个点,大多数前期很热闹,中期很平稳,后期很难玩下去,任重而道远,不过很期待正在做的同学能够到达「守得云开见月明」,把这一块能力探得更深一点。
不过在一些特定工作流领域,有做得不错的,比如说 Automate 和 n8n 这两个工具,对于流程编排的建设可以参考一波。
Automate[16]
Automa 是一个浏览器自动化工作流的浏览器扩展,使用连接块的方式来很方便的编排你的常用操作,有自动填充表单、截图、取数据、定时触发、操作浏览器、Web 交互等能力,可以将你重复的操作很好的交给这个工具,好比快捷指令。
他做得比较好的点是很易于使用,同时提供了不少开箱即用的能力,让人很快速就完成自己的需求。
n8n[17]
n8n 是一个可扩展的工作流自动化工具,看了看对于做流程性的节点编排,逻辑控制还是很不错的,此外支持基于代码自部署。
其他奇特的
除去上面常用的低代码能力,还有两个很神器的,其实不少人常用的 Notion 笔记本身也是一个低代码工具,与之对应的开源实现叫 AppFlowy,还有一种通过编写配置 DSL Json 的方式来构建各个部分的功能的开源产品叫做 YAO,最后还有一种是 Airtable[18] 模式的开源方式 NocoDB。
AppFlowy[19]
如上所说,其实弄低代码的同学,很有必要去玩玩 Notion,已经被大量人玩出了花,此外可以试试这个开源的 AppFlowy,基于此,可以来看如何控制数据到界面的这个展示过程。
YAO[20]
YAO 是一款开源应用引擎,使用 Golang 编写,以一个命令行工具的形式存在, 下载即用。适合用于开发业务系统、网站/APP API 接口、管理后台、自建低代码平台等。YAO 采用 flow-based 的编程模式,通过编写 YAO DSL (JSON 格式逻辑描述) 或使用 JavaScript 编写处理器,实现各种功能。
去年第一次见到 YAO 的时候,就被他的创新思路给吸引了,此外他自带的界面能力设计很不错,整体安装体验很顺畅,对于他的产品实现对于想做协议驱动的同学应该有不少借鉴作用。比如说下面这个系统居然是用 JSON 配置给写出来的,包括 UI 的展示。
NocoDB[21]
NocoDB 是 Airtable[22] 的一个开源替代品。Airtable 是啥呢?Airtable 是一个电子表格-数据库混合体,它具有数据库的功能,但实际上是电子表格,还可以把 文字、图片、链接、文档等各种资料整合在一起。反向来看 Notion 的大思路差不多,不过这个是重协作的使用场景。
NocoDB 的作用就是将 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 转换为智能电子表格,使用场景可以参考下面 gif,还是挺有想象空间的。
此外还有一个类 Airtable 领域的新起之秀叫做 ApiTable[23] ,刚开源不久,整体而言做的比较精致,很推荐一玩,可以去研究研究。
最后
只能低代码说这一块是很卷了,不过找到了对应的场景,同时可以真正解决问题,比原本敲代码要快,那基本上是可以找到一个很好的发展空间。此外文章中有不少是个人自以为的东西,假如发现有不对的,欢迎指出。
参考资料
Appsmith: https://github.com/appsmithorg/appsmith
[2]Retool: https://retool.com/
[3]Budibase: https://github.com/Budibase/budibase
[4]ToolJet: https://github.com/ToolJet/ToolJet
[5]nocobase: https://github.com/nocobase/nocobase
[6]illa-builder: https://github.com/illacloud/illa-builder
[7]refine: https://github.com/refinedev/refine
[8]Supabase: https://github.com/supabase/supabase
[9]文档: https://supabase.com/docs
[10]Appwrite: https://github.com/appwrite/appwrite
[11]SurrealDB: https://github.com/surrealdb/surrealdb
[12]Strapi: https://github.com/strapi/strapi
[13]Cube: https://github.com/cube-js/cube.js
[14]payload: https://github.com/payloadcms/payload
[15]webiny-js: https://github.com/webiny/webiny-js
[16]Automate: https://github.com/AutomaApp/automa
[17]n8n: https://github.com/n8n-io/n8n
[18]Airtable: https://www.airtable.com/
[19]AppFlowy: https://github.com/AppFlowy-IO/AppFlowy
[20]YAO: https://github.com/YaoApp/yao
[21]NocoDB: https://github.com/nocodb/nocodb
[22]Airtable: https://www.airtable.com/
[23]ApiTable: https://github.com/apitable/apitable